home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / byt86jun.arc / LIST1.TXT < prev    next >
Encoding:
Text File  |  1985-10-09  |  3.6 KB  |  94 lines

  1.  
  2. 10   REM              PRODOS CATALOG SORT ROUTINE
  3. 20   REM              ANTONIO C. SILVESTRI
  4. 30   REM              SYSTEMS CONSULTANTS INC.
  5.  
  6. 40   CLEAR: TEXT: HOME: DB = PEEK(115) + 256*PEEK(116)
  7. 50   FOR I=768 TO 792: READ H: POKE I,H: NEXT 
  8. 60   DIM  DIM NA$(55), ST(30), ST$(30), DL(10): N = 0: V = 2:
  9.      V$ = "": GOSUB 460
  10.  
  11. 70   VTAB 2: HTAB 6:  PRINT "PRODOS FILENAME SORT UTILITY":
  12.      VTAB 9: HTAB 10: PRINT "INSERT DISK IN ";:
  13.      FLASH: PRINT "DRIVE 1";: NORMAL: PRINT:
  14.      HTAB 9: PRINT "HIT ANY KEY TO CONTINUE"
  15. 80   POKE  - 16368,0: WAIT  - 16384,128: POKE  - 16368,0
  16.  
  17. 90   HOME: PRINT "SEARCHING FOR VALID FILENAMES": PRINT 
  18. 100  IF N <= 0 THEN 450
  19. 110  GOSUB 480: BL = V: HE = V: HE$ = V$: CO = 0: BC = 0
  20. 120  POKE 791,BL - 256*INT(BL/256):  POKE 792,INT(BL/256):
  21.      POKE 776,128: CALL 768: IF PEEK(786) <> 0 THEN
  22.      PRINT "ERROR IN READING BLOCK NO. ";BL: STOP 
  23. 130  BC = BC + 1: DL(BC) = BL
  24. 140  FOR J=0 TO 12: IF J <> 0 THEN 180
  25. 150  IF BL=HE THEN DR$ = "":
  26.      FOR I=0 TO 38: DR$ = DR$ + CHR$(PEEK(DB + 4 + I)): NEXT:
  27.      HE$ = HE$+"/"+MID$(DR$,2,PEEK(DB+4)-16*INT(PEEK(DB+4)/16)):
  28.      PRINT "READING DIRECTORY: ";HE$
  29. 160  PRINT "BLOCK NO. ";BL;" READ"
  30. 170  IF BL = HE THEN 210
  31. 180  IF  PEEK (DB + 4 + J * 39) = 0 THEN  PRINT "D";: GOTO 210
  32. 190  PRINT ".";: CO = CO + 1: NA$(CO) = "":
  33.      FOR I=0 TO 38: NA$(CO)=NA$(CO)+CHR$(PEEK(DB+4+J*39+I)): NEXT
  34. 200  IF ASC(MID$(NA$(CO),17,1))=15 THEN
  35.        V = ASC(MID$(NA$(CO),18,1)) + 256*ASC(MID$(NA$(CO),19,1)):
  36.        V$ = HE$: GOSUB 460
  37. 210  NEXT J: PRINT: PRINT: X = FRE (0):
  38.      BL = PEEK(DB+2) + 256*PEEK(DB+3): IF BL <> 0 THEN 120
  39.  
  40. 220  IF CO=0 THEN  HOME: VTAB 10: FLASH:
  41.        PRINT "**WARNING**"; CHR$ (7);: NORMAL:
  42.        PRINT "NO FILENAMES CAN BE FOUND": GOTO 290
  43. 230  IF CO=1 THEN 290
  44. 240  HOME: VTAB 10: PRINT CO;" FILENAMES FOUND";: HTAB 29:
  45.      PRINT "NOW ";: FLASH: PRINT "SORTING": NORMAL: NX = CO
  46. 250  VTAB 17: HTAB 8: PRINT "FILENAMES HAVE BEEN PLACED"
  47. 260  VTAB 17: HTAB 7 -  LEN(STR$(CO - NX)): PRINT CO - NX
  48. 270  FLAG = 0: FOR I = 2 TO NX:
  49.      IF  MID$(NA$(I),2,15) < MID$(NA$(I-1),2,15) THEN
  50.        H$ = NA$(I): NA$(I) = NA$(I-1): NA$(I - 1) = H$:
  51.        FLAG = 1
  52. 280  NEXT: X = FRE(0): NX = NX - 1:
  53.      IF FLAG = 1 AND NX <> 1 THEN 260
  54.  
  55. 290  HOME: PRINT "STORING PURGED AND SORTED DIRECTORY": PRINT 
  56. 300  A = 1: B = 0: FOR J = 1 TO BC
  57. 310  PRINT "NOW FORMING BLOCK NO. "; DL(J)
  58. 320  IF J = 1 THEN AX = 0: GOTO 340
  59. 330    AX = DL(J - 1)
  60. 340  IF J = BC THEN BX = 0: GOTO 360
  61. 350    BX = DL(J + 1)
  62. 360  POKE DB,AX-256*INT(AX/256): POKE DB+1, INT(AX/256):
  63.      POKE DB+2,BX-256*INT(BX/256): POKE DB+3, INT(BX/256):
  64.      POKE DB+511,0
  65. 370  IF J = 1 THEN
  66.        FOR K=1 TO 39: POKE DB+3+B*39+K,ASC(MID$(DR$,K,1)): NEXT:
  67.        PRINT ".";:B = B + 1
  68. 380  IF A <= CO THEN
  69.        FOR K=1 TO 39: POKE DB+3+B*39+K,ASC(MID$(NA$(A),K,1)): NEXT:
  70.        PRINT ".";: GOTO 400
  71. 390  FOR K=1 TO 39: POKE DB+3+B*39+K,0: NEXT: PRINT "Z";
  72. 400  A = A+1: B = B+1: IF B < 13 THEN 380
  73. 410  PRINT: PRINT: B = 0: POKE 791,DL(J)-256*INT(DL(J)/256):
  74.      POKE 792, INT(DL(J)/256): POKE 776,129: CALL 768
  75. 420  IF PEEK(786) <> 0 THEN
  76.        PRINT "ERROR IN WRITING BLOCK NO.";DL(J): STOP 
  77. 430  NEXT J: GOTO 90
  78. 440  DATA   169, 0, 141, 18, 3, 32, 0, 191, 0, 19, 3, 176, 1,
  79.             96, 238, 18, 3, 96 , 0, 3, 96, 0, 150, 0, 0
  80. 450  END 
  81.  
  82.  
  83. 460  IF N >= 30 THEN
  84.        PRINT "STACK OVERFLOW": STOP 
  85. 470  N = N+1: ST(N)=V: ST$(N)=V$: RETURN 
  86. 480  IF N <= 0 THEN
  87.        PRINT "STACK UNDERFLOW": STOP 
  88. 490  V = ST(N): V$ = ST$(N): N = N-1: RETURN 
  89.  
  90.  
  91.                The PRODOS Diskette Sorting Utility
  92.                            Listing #1
  93.  
  94.